#!/bin/bash
# 一键修复服务器端口不匹配问题
# 请将此脚本内容复制到服务器上执行

echo "🔧 开始修复CU MR BULL服务器端口问题..."
echo "问题：Node.js运行在3000端口，但防火墙开放的是8080端口"
echo ""

# 停止现有服务
echo "1. 停止现有Node.js服务..."
pkill -f "node.*start-server.js" 2>/dev/null || true
pkill -f "node.*production-server.js" 2>/dev/null || true
echo "✅ 已停止现有服务"

# 进入后端目录
echo "2. 进入后端目录..."
cd /opt/cumrbull/backend/ || {
    echo "❌ 错误：无法进入 /opt/cumrbull/backend/ 目录"
    echo "请检查目录是否存在"
    exit 1
}
echo "✅ 已进入后端目录: $(pwd)"

# 备份配置文件
echo "3. 备份配置文件..."
if [ -f ".env.production" ]; then
    cp .env.production .env.production.backup.$(date +%Y%m%d_%H%M%S)
    echo "✅ 已备份 .env.production"
else
    echo "⚠️  警告：.env.production 文件不存在"
fi

# 修改端口配置
echo "4. 修改端口配置..."
if [ -f ".env.production" ]; then
    sed -i 's/PORT=3000/PORT=8080/g' .env.production
    echo "当前端口配置："
    grep "PORT=" .env.production
    echo "✅ 端口已修改为8080"
else
    echo "创建 .env.production 文件..."
    cat > .env.production << 'EOF'
# 阿里云RDS MySQL数据库配置
DB_HOST=rm-t4n2um727ltmubz.mysql.singapore.rds.aliyuncs.com
DB_PORT=3306
DB_USER=cmb_admin
DB_PASSWORD=132Singer45#$
DB_NAME=cumrbull

# 服务器配置
PORT=8080
NODE_ENV=production

# JWT配置
JWT_SECRET=your-jwt-secret-key-here
JWT_EXPIRES_IN=24h

# 其他配置
API_BASE_URL=https://api.cumrbull.com
FRONTEND_URL=https://cumrbull.com
EOF
    echo "✅ 已创建 .env.production 文件"
fi

# 检查依赖
echo "5. 检查依赖..."
if [ ! -d "node_modules" ]; then
    echo "安装依赖..."
    npm install
fi
echo "✅ 依赖检查完成"

# 启动服务
echo "6. 启动Node.js服务..."
nohup node start-server.js > /var/log/backend.log 2>&1 &
echo "✅ 服务已启动"

# 等待服务启动
echo "7. 等待服务启动..."
sleep 5

# 检查服务状态
echo "8. 检查服务状态..."
echo "进程状态："
ps aux | grep "node.*start-server.js" | grep -v grep

echo "端口监听状态："
netstat -tlnp | grep :8080

echo "最新日志："
tail -10 /var/log/backend.log

# 测试连接
echo "9. 测试连接..."
echo "本地测试："
if curl -s --connect-timeout 5 "http://localhost:8080/health" > /dev/null; then
    echo "✅ 本地连接成功！"
    echo "健康检查响应："
    curl -s "http://localhost:8080/health" | python3 -m json.tool 2>/dev/null || curl -s "http://localhost:8080/health"
else
    echo "❌ 本地连接失败"
fi

echo ""
echo "🎉 修复完成！"
echo "现在可以通过以下URL访问服务："
echo "- 健康检查: http://47.237.10.129:8080/health"
echo "- API信息: http://47.237.10.129:8080/api"
echo ""
echo "如果外部仍无法访问，请检查："
echo "1. 防火墙是否正确开放8080端口"
echo "2. 服务器安全组设置"
echo "3. 查看详细日志: tail -50 /var/log/backend.log"